import {addUConcates} from '../../api/adduser'

Page({
  data: {
    userinfo: {
      userId: 1,
      phone: '',
      name: '',
      idcard: '',
      idType: '中国居民身份证',
      role: 0,
      certificateNum:''
    },
    specialCard:false,
    idTypes: ['中国居民身份证',
    '护照',
    '港澳居民来往内地通行证', 
    '台湾居民来往大陆通行证',
    '美国驾照',
    '美国社会安全号(SSN)',
    '英国驾照',
    '英国BRP卡(居留许可)'],
    idType: 0,
    preferenceTypes: ['成人', '儿童', '学生', '残疾军人'],
    preferenceType: 0
  },

  // 添加常用联系人
  async addContacts(e) {
    // 简单验证
    if (!this.data.userinfo.name || !this.data.userinfo.idcard || !this.data.userinfo.phone) {
      wx.showToast({
        title: '请完善信息',
        icon: 'none'
      })
      return
    }
    
    // 身份证格式验证
    if (!this.validateIdCard(this.data.userinfo.idcard)) {
      wx.showToast({
        title: '身份证格式错误',
        icon: 'none'
      })
      return
    }
  
    //计算年龄
    if(this.data.userinfo.idType=="中国居民身份证"){
      let day=this.data.userinfo.idcard.substring(6,14)
      let now=new Date()
      let age=0
      if(now.getMonth()+1>Number(day.substring(4,6))){
        age=now.getFullYear()-Number(day.substring(0,4))
      }else if(now.getMonth()+1==Number(day.substring(4,6))){
        if(now.getDay<Number(day.substring(6))){
          age=now.getFullYear()-Number(day.substring(0,4))-1
        }else{
          age=now.getFullYear()-Number(day.substring(0,4))
        }
      }else{
        age=now.getFullYear()-Number(day.substring(0,4))-1
      }
      console.log(age)
      if(age>=18 && this.data.userinfo.role<2){
        this.setData({
          'userinfo.role':0,
          preferenceType:0
        })
      }else if(age<18 && this.data.userinfo.role<2){
        this.setData({
          'userinfo.role':1,
          preferenceType:1
        })
      }
      console.log(this.data.userinfo)
    }
    
    
    // 手机号验证
    if (!this.validatePhone(this.data.userinfo.phone)) {
      wx.showToast({
        title: '手机号格式错误',
        icon: 'none'
      })
      return
    }
    
    console.log('提交信息:', this.data.userinfo)
    
    const data=await addUConcates(this.data.userinfo)
    if(data.msg=="success"){
      wx.showToast({
        title: '添加成功',
        icon: 'success',
        success: () => {
          // 添加成功后返回上一页
          setTimeout(() => {
            wx.navigateBack()
          }, 1500)
        }
      })
    }else if(data.msg=="名字不正确"){
      wx.showToast({
        title: '请输入正确信息',
        icon: 'error',
      })
    }else{
      wx.showToast({
        title: '请输入合法身份证',
        icon: 'error',
      })
    }
    
  },
  
  // 身份证号码验证
  validateIdCard(id) {
    const idType = this.data.userinfo.idType;
    
    switch(idType) {
      // 中国大陆证件
      case '中国居民身份证':
        return this.validateChineseID(id);
      case '护照':
        return this.validatePassport(id);
        
      // 港澳台证件  
      case '港澳居民来往内地通行证':
        return this.validateHKMacaoPass(id);
      case '台湾居民来往大陆通行证':
        return this.validateTaiwanPass(id);
        
      // 美国证件
      case '美国驾照':
        return this.validateUSDrivingLicense(id);
      case '美国社会安全号(SSN)':
        return this.validateUSSSN(id);
        
      // 英国证件  
      case '英国驾照':
        return this.validateUKDrivingLicense(id);
      case '英国BRP卡(居留许可)':
        return this.validateUKBRPCard(id);
        
      default:
        return true; // 其他未列出的证件类型不验证
    }
  },
  
  // ===== 中国大陆证件验证 =====
  validateChineseID(id) {
    const reg = /^[1-9]\d{5}(19|20)\d{2}((0[1-9])|(1[0-2]))(([0-2][1-9])|10|20|30|31)\d{3}[0-9Xx]$/;
    return reg.test(id);
  },
  
  validatePassport(id) {
    // 中国护照：E/G/D/S/P开头 + 7/8位数字
    // 国际护照：字母开头 + 7-12位字母数字
    return /^[EGDSPegdisp]\d{7,8}$|^[A-Za-z][A-Za-z0-9]{6,11}$/i.test(id);
  },
  
  // ===== 港澳台证件验证 ===== 
  validateHKMacaoPass(id) {
    // 港澳通行证：H/M开头 + 10位数字
    return /^[HMhm]\d{10}$/.test(id);
  },
  
  validateTaiwanPass(id) {
    // 台湾通行证：8位数字 或 10位数字+字母
    return /^\d{8}$|^\d{10}[a-zA-Z]?$/.test(id);
  },
  
  // ===== 美国证件验证 =====
  validateUSDrivingLicense(id) {
    // 加州格式：1字母+7数字
    return /^[A-Z]\d{7}$/i.test(id);
  },
  
  validateUSSSN(id) {
    const cleaned = id.replace(/-/g, '');
    return /^\d{9}$/.test(cleaned) && 
           !/^000|666|9/.test(cleaned) &&
           !/^0000/.test(cleaned.substr(4));
  },
  
  // ===== 英国证件验证 ===== 
  validateUKDrivingLicense(id) {
    // 格式：5字母+5数字+2字母+5数字
    return /^[A-Z]{5}\d{5}[A-Z]{2}\d{5}$/i.test(id.replace(/\s/g, ''));
  },
  
  validateUKBRPCard(id) {
    // 格式：2字母+7数字
    return /^[A-Z]{2}\d{7}$/i.test(id);
  },
  
  // 手机号验证
  validatePhone(phone) {
    const reg = /^1[3-9]\d{9}$/;
    return reg.test(phone);
  },

  // 证件类型变更
  onIdTypeChange(e) {
    const index = e.detail.value;
    this.setData({
      idType: index,
      'userinfo.idType': this.data.idTypes[index]
    })
  },

  // 优惠类型变更
  onPreferenceChange(e) {
    const index = e.detail.value;
    this.setData({
      preferenceType: index,
      'userinfo.role': index
    })
    if(e.detail.value>1){
      this.setData({
        specialCard:true
      })
    }else{
      this.setData({
        specialCard:false
      })
    }
  },

  // 身份证号码变更
  onUserIdChange(e) {
    this.setData({
      'userinfo.idcard': e.detail.value
    })
  },

  //特殊证件变更
  oncertificateNumChange(e){
    this.setData({
      'userinfo.certificateNum': e.detail.value
    })
  },

  // 手机号变更
  onPhoneChange(e) {
    this.setData({
      'userinfo.phone': e.detail.value
    })
  },

  onLoad(){
    const user=wx.getStorageSync('userInfo')
    this.setData({
      'userinfo.userId':user.userId
    })
  },

  // 姓名变更
  onUserNameChange(e) {
    this.setData({
      'userinfo.name': e.detail.value
    })
  }
})


